// axsio 异步请求初始化操作定义
import axios from 'axios';
import NProgress from "nprogress";
// import { Message,Notification } from 'element-ui';
import { Message } from 'element-ui';


// axios.create 方法创建一个具有默认配置的新异步axios对象

const instance = axios.create({
    // baseURL: "http://www.tangxiaoyang.vip:8888/api/v2",
    baseURL: process.env.VUE_APP_API_BASE_URL,
    timeout: 3000,
    // 有些后台会基于该字段判断请求响应的应该是 json数据还是html页面
    headers: { 'X-requested-with': 'XMLHttpRequest' }
});

// axios 提供拦截器方法
//   1、在请求向后台进行真正发送前，进行请求对象的修改
//           - 请求头的修改，请求参数的修改 ……

//   2、在请求完成后，数据提供给方法调用代码前进行数据的预处理

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    NProgress.start();
    // console.log(config);
    // config.data.aa = 1111;
    if(config.url=="/login"){
        return config;
    }
    let user = sessionStorage.getItem("user");
    if(user!=null){
        let { token } = JSON.parse(user);
        config.headers.Authorization = token;
        return config;
    }else{
        Message.error("您无权限访问该数据");
    }
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
    NProgress.done();
    // 对响应数据做点什么
    // console.log("interceptors.response", response);
    // if (response.statusText == "OK" && response.data.meta.status == 200) {
    //     return response.data.data;
    // }
    if(response.statusText == "OK"){
        if(response.data.meta.status == 200||response.data.meta.status == 201||response.data.meta.status == 204){
            return response.data.data;
        }
        // if(response.data.meta.status == 201||response.data.meta.status == 204){
        //     Notification.success({ title:response.data.meta.msg });
        //     return response.data.data;
        // }
        // if(response.data.meta.status == 204){
        //     Notification.success({ title:response.data.meta.msg });
        //     return response.data.data;
        // }
        // switch (response.data.meta.status) {
        //     case 200:
        //         return response.data.data;
        //     case 201:
        //     case 204:
        //         Notification.success({ title:response.data.meta.msg });
        //         return response.data.data;
        // }
    }
    Message.error(response?.data?.meta?.msg ?? "程序运行错误，稍后重试");
    return null;
}, function (error) {
    NProgress.done();
    // 对响应错误做点什么
    // console.log("interceptors.response-error")
    Message.error("网络异常，请检查网络连接");
    return Promise.reject(error);
});

export default instance;